﻿using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;

namespace LASLogic.BusinessLayer.DataModel
{
    /// <summary>
    /// Clase que maneja los meses contables
    /// </summary>
    [DataContract]
    public class AccountingMonth
    {
        #region Properties

        /// <summary>
        /// Identificador del mes contable
        /// </summary>
        [DataMember]
        public int MonthId { get; set; }

        /// <summary>
        /// Estado del mes contable, puede ser abierto, abierto a ventas, cerrado
        /// </summary>
        [DataMember]
        public string MonthStatus { get; set; }

        /// <summary>
        /// Fecha de inicializacion del mes contable
        /// </summary>
        [DataMember]
        public DateTime StartDate { get; set; }

        /// <summary>
        /// Fecha de finalizacion del mes contable
        /// </summary>
        [DataMember]
        public DateTime EndDate { get; set; }

        /// <summary>
        /// Fecha de inicio de validez del mes
        /// </summary>
        [DataMember]
        public DateTime ValidSince { get; set; }

        /// <summary>
        /// Fecha de vencimiento del mes contable
        /// </summary>
        [DataMember]
        public DateTime Goodthru { get; set; }

        /// <summary>
        /// Balance de la cuenta en moneda local
        /// </summary>
        [DataMember]
        public SqlMoney LocalBalance { get; set; }
        /// <summary>
        /// Balance de la cuenta en moneda del sistema
        /// </summary>
        [DataMember]
        public Decimal SystemBalance { get; set; }
    
        
        #endregion

        #region Constructors

        /// <summary>
        /// Constructor de la clase monthid
        /// </summary>
        /// <param name="monthId">identificador del mes contable</param>
        /// <param name="monthStatus">Estado del mes contable</param>
        /// <param name="startDate">Fecha del inicio del mes contable</param>
        /// <param name="endDate">Fecha de finalizacion del mes contable</param>
        /// <param name="validSince">Fecha de inicio de vencimiento del mes contable</param>
        /// <param name="goodthru">Fecha de finalizacion del vencimiento del mes contable</param>
        /// <param name="localBalance">Balance en moneda local del mes</param>
        /// <param name="systemBalance">Balance en moneda del sistema del mes</param>
        public AccountingMonth(int monthId, string monthStatus, DateTime startDate, DateTime endDate, DateTime validSince, DateTime goodthru, Decimal localBalance, Decimal systemBalance)
        {
            MonthId = monthId;
            MonthStatus = monthStatus;
            StartDate = startDate;
            EndDate = endDate;
            ValidSince = validSince;
            Goodthru = goodthru;
            LocalBalance = localBalance;
            SystemBalance = systemBalance;
        }


        /// <summary>
        /// Constructor vacio de la clase
        /// </summary>
        public AccountingMonth()
        {
        }

        #endregion


    }
}
